如何引用vector<int>::iterator

来源:百度知道 编辑:UC知道 时间:2024/07/02 08:36:06
比如定义一函数
int sum(vector<int>::iterator &beg,vector<int>::iterator &end);
为什么vector<int>::iterator &beg这种写法是错误的?那如果我想引用迭代器该怎么写?(就像如果引用指针可以写成int *&p;)

使用上的问题
估计你是这样用的
sum(vec.begin(),vec.end());
vector::begin()的定义是返回一个临时对象,因此具有const属性,
所以无法被你的函数直接调用。

如果把函数定义为
sum(const vector<int>& 。。。)就能使用,但这样你的函数sum里就不能iterator了,
所以你的调用改成

vector<int>::iterator beg = vec.begin();
vector<int>::iterator end = vec.end();
sum(beg,end);

或者你去找些typetrait的资料,可以去掉const的限制